"""
# 实际结果如下：
# 登陆成功返回的实际结果如下：
login_ok_result = {
    "success": True,
    "code": 10000,
    "message": "操作成功！"
}

# 登陆失败返回的实际结果如下：
login_err_result = {
    "success": False,
    "code": 20001,
    "message": "用户名或密码错误"
}

1. 利用unittest框架，设计测试用例
2. 完成断言
3. 生成测试报告
"""
import unittest

from htmltestreport import HTMLTestReport


class TestAdd(unittest.TestCase):
    def test_login_ok(self):
        print('test_login_ok')
        # 1. 发送登陆请求
        # 2. 获取登陆成功的执行结果
        # 实际结果如下：
        # 登陆成功返回的实际结果如下：
        login_ok_result = {
            "success": True,
            "code": 10000,
            "message": "操作成功！"
        }
        # 3. 断言
        # 预期结果：True, 10000, 包含'成功'
        self.assertEqual(True, login_ok_result.get('success'))
        self.assertEqual(10000, login_ok_result.get('code'))
        self.assertIn('成功', login_ok_result.get('message'))

    def test_login_err(self):
        print('test_login_err')
        # 1. 发送登陆请求
        # 2. 获取登陆失败的执行结果
        # 实际结果如下：
        # 登陆失败返回的实际结果如下：
        login_err_result = {
            "success": False,
            "code": 20001,
            "message": "用户名或密码错误"
        }
        # 3. 断言
        # 预期结果：False, 20001, 包含'用户名或密码错误'
        self.assertEqual(False, login_err_result.get('success'))
        self.assertEqual(20001, login_err_result.get('code'))
        self.assertIn('用户名或密码错误', login_err_result.get('message'))


if __name__ == '__main__':
    # 如果套件和测试用例在同一个文件，使用命令运行
    # 2. 生成测试套件
    suite = unittest.defaultTestLoader.discover('./', 'hm16*')
    # 3. 实例化HTMLTestReport对象
    report = HTMLTestReport('登陆测试报告.html', '测试报告', '测试报告v1.0版本')
    # 4. 执行测试套件
    report.run(suite)
